package javachongkao.面向对象上.设计一个风扇Fan类;

import java.util.Scanner;
//7-31 设计一个风扇Fan类
//设计一个名为Fan的类表示一个风扇。这个类包括：
//
//1.三个名为SlOW、MEDIUM和FAST，其值为1、2和3常量表示风扇的速度。
//
//2.一个名为speed的int类型私有数据域表示风扇的速度（默认值为SLOW）。
//
//3.一个名为on的boolean类型私有数据域表示风扇是否打开（默认值为false）。
//
//4.一个名为radius的double类型私有数据域表示风扇的半径（默认值为5）。
//
//5.一个名为color的string类型数据域表示风扇的颜色（默认值为white）。
//
//6.这四个成员变量(数据域)的访问器和修改器。
//
//7.一个无参构造方法;
//
//8.一个有参构造方法 public Fan(int fanSpeed,boolean fanOn,double fanRadius,String fanColor) { ... }，
//
//9.一个名为toString()的方法返回描述风扇的字符串。如果风扇是打开的，那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。如果风扇没有打开，该方法就会返回一个由"fan is off"和风扇颜色以及半径组合成的字符串。
//
//请在自己的草稿本上画出UML图，养成良好的设计习惯。
//
//要求：创建两个Fan对象：
//
//第一个对象利用无参构造方法构造默认风扇对象Fan1；
//
//第二个对象依据输入的风扇属性，调用有参构造方法构造自定义风扇对象Fan2。
//
//通过调用它们的toString方法显示这些对象。
//
//输入格式:
//第二个对象的属性
//
//输出格式:
//分别输出默认风扇和自定义风扇的速度、颜色、半径以及风扇是否打开
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取输入
        int fanSpeed = scanner.nextInt();
        boolean fanOn = scanner.nextBoolean();
        double fanRadius = scanner.nextDouble();
        String fanColor = scanner.next();

        // 创建风扇对象
        Fan fan1 = new Fan();
        Fan fan2 = new Fan(fanSpeed, fanOn, fanRadius, fanColor);

        // 输出结果
        System.out.println("-------");
        System.out.println("Default");
        System.out.println("-------");
        System.out.println(fan1.toString());

        System.out.println("-------");
        System.out.println("My Fan");
        System.out.println("-------");
        System.out.println(fan2.toString());

        scanner.close();
    }
}

class Fan {
    public static final int SLOW = 1;
    public static final int MEDIUM = 2;
    public static final int FAST = 3;

    private int speed;
    private boolean on;
    private double radius;
    private String color;

    // 无参构造方法
    public Fan() {
        this.speed = SLOW;
        this.on = false;
        this.radius = 5.0;
        this.color = "white";
    }

    // 有参构造方法
    public Fan(int fanSpeed, boolean fanOn, double fanRadius, String fanColor) {
        this.speed = fanSpeed;
        this.on = fanOn;
        this.radius = fanRadius;
        this.color = fanColor;
    }

    // 访问器和修改器
    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }

    public boolean isOn() {
        return on;
    }

    public void setOn(boolean on) {
        this.on = on;
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    // toString方法
    @Override
    public String toString() {
        if (on) {
            return "speed " + speed + "\ncolor " + color + "\nradius " + radius + "\nfan is on";
        } else {
            return "speed " + speed + "\ncolor " + color + "\nradius " + radius + "\nfan is off";
        }
    }
}
